import type { FieldIdentifiers, MenuItemType, SubMenuType, MenuItem } from "../global.ts";


export function transformToAntdMenuFormat(
  menuArray: MenuItem[],
  fieldIdentifiers: FieldIdentifiers
) {
  // 创建一个Map来存储所有菜单项
  const menuMap = new Map();
  
  // 第一次遍历：创建所有菜单项
  menuArray.forEach(item => {
    // 构建基本的菜单项
    const menuItem: MenuItemType = {
      key: item[fieldIdentifiers.key] || item[fieldIdentifiers.id],
      label: item[fieldIdentifiers.title],
      children: [],
    };
    
    if (fieldIdentifiers.path && item[fieldIdentifiers.path]) {
      menuItem.path = item[fieldIdentifiers.path];
    }

    // 处理图标
    if (item.icon) {
      menuItem.icon = item.icon;
    }

    // 处理其他可能的属性
    if (item.is_disabled !== undefined) {
      menuItem.disabled = item.is_disabled === 1;
    }

    // if (item.danger !== undefined) {
    //   menuItem.danger = item.danger;
    // }

    if (item.name !== undefined) {
      menuItem.title = item.name;
    }

    menuMap.set(item[fieldIdentifiers.id], menuItem);
  });
  
  // 第二次遍历：构建层级关系
  const result: MenuItemType[] = [];
  menuArray.forEach(item => {
    const menuItem = menuMap.get(item[fieldIdentifiers.id]);
    const parentId = item[fieldIdentifiers.pId];
    
    if (parentId && parentId !== '0' && menuMap.has(parentId)) {
      // 如果有父级且父级存在，添加到父级的children中
      const parentItem = menuMap.get(parentId) as SubMenuType;
      parentItem.children.push(menuItem);
    } else {
      // 如果没有父级或父级是根级，直接添加到结果数组
      result.push(menuItem);
    }
  });

  // 清理空的children数组
  const cleanEmptyChildren = (items: MenuItemType[]) => {
    items.forEach(item => {
      if (item.children && item.children.length === 0) {
        delete item.children;
      } else if (item.children) {
        cleanEmptyChildren(item.children);
      }
    });
  };
  
  cleanEmptyChildren(result);
  
  return result;
}
